package com.jdd.modules.parking.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jdd.modules.order.entity.ParkOrderInfo;
import com.jdd.modules.parking.entity.ParkCarEnterLog;
import com.jdd.modules.parking.entity.ParkCarOutEntranceRecord;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jdd.modules.parking.entity.ParkCarOutLog;
import com.jdd.modules.parking.vo.CarParkingInfoVO;
import com.jdd.modules.parking.vo.ParkOrderInfoSumVo;
import com.jdd.modules.parking.vo.QueryPageDetailsListVO;

import java.text.ParseException;
import java.util.List;

/**
 * @Description: 停车记录
 * @Author: jdd
 * @Date:   2022-05-28
 * @Version: V1.0
 */
public interface IParkCarOutEntranceRecordService extends IService<ParkCarOutEntranceRecord> {
    /**
     * @Description  根据入场记录组装停车记录
     * @author shangyue
     * @Date 2022-05-28
     * @param carEnterLog
     * @return
     */
    ParkCarOutEntranceRecord assemblyCarEntranceRecord(ParkCarEnterLog carEnterLog);
    /**
     * @Description  根据出场记录组装停车记录
     * @author shangyue
     * @Date 2022-05-28
     * @param parkCarOutLog
     * @return
     */
    void assemblyCarOutEntranceRecord(ParkCarOutLog parkCarOutLog);


    /**
     * @Description 停车记录页面查询接口
     * @author shangyue
     * @Date 2022-06-07
     * @param parkCarOutEntranceRecord
     * @param entStartTime
     * @param entEndTime
     * @param outStartTime
     * @param outEndTime
     * @return
     */

    ParkOrderInfoSumVo getParkCarOutEntranceRecordSumInfo(ParkCarOutEntranceRecord parkCarOutEntranceRecord, String entStartTime, String entEndTime, String outStartTime, String outEndTime);

    /**
     * 分页查询出入记录
     * @param page
     * @param batchNumber
     * @param carEnterId
     * @return
     */
    IPage<QueryPageDetailsListVO> queryPageDetailsList(Page<QueryPageDetailsListVO> page, String batchNumber, String carEnterId);
    /**
     * @Description  场内码更新停车记录
     * @author shangyue
     * @Date 2022-06-07
     * @param parkOrderInfo
     * @return
     */
    void assemblyCarOutEntranceOrderInfoRecord(ParkOrderInfo parkOrderInfo);
    /**
     * @Description 修改同步状态
     * @author shangyue
     * @Date 2022-06-21
     * @param id
     * @param synchronousStatus
     * @return
     */

    void updateSynchronousStatus(String id, String synchronousStatus);
    /**
     * @Description 查询同步失败的停车记录
     * @author shangyue
     * @Date 2022-06-22
     * @param
     * @return
     */

    List<ParkCarOutEntranceRecord> parkCarOutEntranceRecordListStateN();
        /**
         * @Description  组装云端需要的停车记录数据
         * @author shangyue
         * @Date 2022-06-22
         * @param parkCarOutEntranceRecord
         * @return
         */

      CarParkingInfoVO assembleEntityCarParkingInfoVO(ParkCarOutEntranceRecord parkCarOutEntranceRecord);
}
